package com.admin.rxandroidtest.retrofitRxAndroid;

import android.view.View;

import com.admin.rxandroidtest.BaseViewActivity;
import com.admin.rxandroidtest.ConnectionService;
import com.admin.rxandroidtest.Result;

import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class RetRxAndroidActivity extends BaseViewActivity {

    @Override
    public void initEvent() {
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                tvr.setText("");
                pb1.setVisibility(View.VISIBLE);
                getGsonT();
            }
        });
    }

    public void getGsonT(){
        Observable<Result> resultObservable= RetrofitRxAndroidServer.getInstance().createCall(ConnectionService.class).getBlogGsonT();
        final Result[] result = new Result[1];
        resultObservable.subscribeOn(Schedulers.io())        //将网络请求放在IO线程中执行
                .observeOn(AndroidSchedulers.mainThread())   //网络请求得到的数据放入主线程中执行
                .subscribe(new Observer<Result>() {             // 此处 resultObservable 是被观察者 new Observer<Result>() 是观察者
                    @Override
                    public void onSubscribe(Disposable d) {
                        // d.dispose(); 可在此解除订阅   最先执行
                    }

                    @Override
                    public void onNext(Result value) {
                        result[0] =value;       //Observer获取到的结果 value  其次执行
                    }

                    @Override
                    public void onError(Throwable e) {  //错误时执行

                    }

                    @Override  //Observer 执行完毕之后，执行此方法  最后执行
                    public void onComplete() {
                        if(result[0]!=null){
                            System.out.println(result[0]);
                            pb1.setVisibility(View.GONE);
                            tvr.setText(result[0].toString());
                        }
                    }
                });
    }
}
